using CommunityToolkit.Mvvm.ComponentModel;
// 引入服务接口
using MiniTheme.Services.Interfaces;
// 引入视图页面
using MiniTheme.Views.Pages;

namespace MiniTheme.ViewModels;

// 主视图模型类，负责管理应用程序的主要状态和行为
//【注意】这里是利用MVVMToolkit包里面的分部方法，其实还可以通过Command的方式导航，不再赘述
public partial class MainViewModel : ObservableObject
{
    private readonly INavigationService _navigationService;

    // 主题视图是否被选中，默认为true
    [ObservableProperty]
    private bool _isThemeViewSelected = true;
    // 语言视图是否被选中
    [ObservableProperty]
    private bool _isLanguageViewSelected;
    // 控件视图是否被选中
    [ObservableProperty]
    private bool _isControlsViewSelected;
    // 构造函数，初始化主视图模型
    public MainViewModel(INavigationService navigationService)
    {
        // 注入导航服务
        _navigationService = navigationService;
    }
    // 主题视图选中状态变化时的处理方法
    partial void OnIsThemeViewSelectedChanged(bool value)
    {
        if (value)
        {
            _navigationService.NavigateTo<ThemeView>();
            // 重置其他视图选中状态
            IsLanguageViewSelected = false;
            IsControlsViewSelected = false;
        }
    }
    // 语言视图选中状态变化时的处理方法
    partial void OnIsLanguageViewSelectedChanged(bool value)
    {
        if (value)
        {
            _navigationService.NavigateTo<LanguageView>();
            // 重置其他视图选中状态
            IsThemeViewSelected = false;
            IsControlsViewSelected = false;
        }
    }
    // 控件视图选中状态变化时的处理方法
    partial void OnIsControlsViewSelectedChanged(bool value)
    {
        if (value)
        {
            _navigationService.NavigateTo<ControlsView>();
            // 重置其他视图选中状态
            IsThemeViewSelected = false;
            IsLanguageViewSelected = false;
        }
    }
}
